package com.hyz.droidplugindemo;

import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.RemoteException;
import android.util.Log;
import android.view.View;

import com.morgoo.droidplugin.pm.PluginManager;

/**
 * 360DroidPlugin使用注意事项
 * 1.appliction继承自PluginApplication，或者使用其他的办法attach等
 * 2.安装代码，如下install方法
 * 3.启动代码如下opentNextApp
 * 4.安装不上，如果你安装了360的一些apk,360卫士，360 手机助手，会去冲突
    找到AnroidMnifet.xml文件     ctrl+F 搜索authorities， 全部改为自己的包名
 *
 *  该框架的好处就是你的差价apk不需要做特殊处理。
 *
 *  原理与我们demo的原理一样，注册代理的activity service，等
 *  hook他们的启动过程
 *
 *
 */
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void opentNextApp(){
        // 一定要这样
        PackageManager pm =  getPackageManager();
        // 有了apk路径是可以获取apk的包名
        PackageInfo info = pm.getPackageArchiveInfo("apkPath", PackageManager.GET_ACTIVITIES);
        String packageName = info.packageName;
        Intent intent = pm.getLaunchIntentForPackage(packageName);
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        intent.putExtra("user_name","Darren");
        startActivity(intent);
    }

    public void install(View view){
        // PluginManager.install(this,apkPath);
        try {
            int result = PluginManager.getInstance().installPackage("apkPath", 0);
            Log.e("TAG","result = "+result);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }


    /**
     * 360DroidPlugin缺陷
     * 无法在插件中发送具有自定义资源的Notification，例如： a. 带自定义RemoteLayout的Notification b.
     图标通过R.drawable.XXX指定的通知（插件系统会自动将其转化为Bitmap）

     无法在插件中注册一些具有特殊Intent
     Filter的Service、Activity、BroadcastReceiver、ContentProvider等组件以供Android系统、已经安装的其他APP调用。

     对Activity的LaunchMode支持不够好，Activity
     Stack管理存在一定缺陷。Activity的onNewIntent函数可能不会被触发。 （此为BUG，未来会修复）

     缺乏对Native层的Hook，对某些带native代码的apk支持不好，可能无法运行。比如一部分游戏（cocos2d、unity3d开发的游戏估计都用不了）无法当作插件运行。
     */
}
